package cn.com.surker.sale.service;

import cn.com.surker.sale.entity.SaleContractPayment;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 销售项目收款表 服务类
 * </p>
 *
 * @author admin
 * @since 2024-05-20
 */
public interface SaleContractPaymentService extends IService<SaleContractPayment> {

	/**
	 * 保存回款
	 * @param payment
	 * @return
	 */
	SaleContractPayment savePayment(SaleContractPayment payment);

	/**
	 * 修改回款信息
	 * @param payment
	 * @return
	 */
	Integer updatePayment(SaleContractPayment payment);

	/**
	 * 修改回款状态
	 * @param id
	 * @param status
	 * @param updator
	 * @return
	 */
	Integer updatePaymentStatus(Long id, Integer status, String updator);

	/**
	 * 分页查询合同列表
	 *
	 * @param orgId     站点列表
	 * @param conName   合同名称
	 * @param pageIndex 分页数据
	 * @param limit
	 * @return
	 */
	IPage<SaleContractPayment> findPage(Long orgId, List<Long> orgIds, Long conId, String conName, String payOrigin, Integer confirmType, String sale, Integer pageIndex, Integer limit);

	/**
	 * 查询销售的数据
	 *
	 * @param orgId       站点id
	 * @param orgIds      站点ids
	 * @param conId       合同id
	 * @param conName     合同名称
	 * @param payOrigin   付款单位
	 * @param confirmType 是否认领
	 * @param sale        销售人员
	 * @param pageIndex
	 * @param limit
	 * @return
	 */
	IPage<SaleContractPayment> findSalePage(String searchVal, Long orgId, List<Long> orgIds, Long conId, String conName, String payOrigin, Integer payType,
											Integer status, Integer confirmType, String sale, String startTime, String endTime,
											Integer isPrint,Integer isReport, Integer isCheck, Integer pageIndex, Integer limit);

	/**
	 * 查询回款记录中的销售人员
	 * @param orgId
	 * @return
	 */
	List<Map<String, Object>> findSales(Long orgId);

	/**
	 * 查询导出收款报表汇总
	 * @param orgId 公司ID
	 * @param sales 销售人员
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @return
	 */
	Map<String, List<Map<String, Object>>> findExportData(Long orgId, String sales, String startTime, String endTime);

	Map<String, Object> findSumMoney(String searchVal, Long orgId, Integer type, Integer isPrint, Integer isReport,
								 String sale, String startTime, String endTime);
}
